function logar() {
    try {
        var login = $("#login").val();
        var senha = $("#senha").val();
        $.ajax({
            type: "POST",
            url : "../controllers/UsuarioController.php",
            data : {
                login : login,
                senha : senha,
                acao : "validar",
                tipo_listagem : "json"
            },
            success: function(msg){
                try {
                    if (msg.indexOf("Exception: ") != -1) {
                        msg = msg.replace("Exception: ", "");
                        showMessage(ERROR_MESSAGE, msg);
                        return;
                    }
                    var user = $.evalJSON(msg);
                    usuario_logado = user;
                    $.cookie("usuario_logado", msg, {expires: 1});
                    mountIndex();
                } catch(e) {
                    reportCrash(null, e.name, e.stack);
                }
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                reportCrash(XMLHttpRequest, textStatus, errorThrown);
            }
        });
    } catch(e) {
        reportCrash(null, e.name, e.stack);
    }
}

function mountIndex() {
    container.insert('principal', 'principal.html', function() {
        $("#menu").load("menu.html", function () {
            $("#menu_accordion").accordion();
        });
        containerPrincipal = new Container();
        containerPrincipal.setId('principal_content');
        containerPrincipal.insert('bem-vindo', 'bem-vindo.html', null);
        containerPrincipal.select('bem-vindo');
        $("#rodape").load("rodape.html");
        $("#usuario_tmpl").tmpl(usuario_logado).appendTo("#usuario_info");
    });
    container.select('principal');
}

function logoff() {
    try {
        $.ajax({
            type: "POST",
            url : "../controllers/UsuarioController.php",
            data : {
                acao : "sair"
            },
            success: function(msg){
                try {
                    if (msg.indexOf("Exception: ") != -1) {
                        msg = msg.replace("Exception: ", "");
                        showMessage(ERROR_MESSAGE, msg);
                        return;
                    }
                    $.cookie("usuario_logado", null);
                    window.location = './';
                } catch(e) {
                    reportCrash(null, e.name, e.stack);
                }
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                reportCrash(XMLHttpRequest, textStatus, errorThrown);
            }
        });
    } catch(e) {
        reportCrash(null, e.name, e.stack);
    }
}

function manutencaoUsuarioEspaco(acao, cod_espaco) {
    try {
        var cod_usuario = cod_usuario_consulta;
        if (acao == 'cadastrar_espaco') {
            cod_espaco = $("#cod_espaco_cadastrar").val();
            if (cod_espaco == '') {
                showMessage(ERROR_MESSAGE, 'Espaço Cultural inválido!');
                return;
            }
        }
        $.ajax({
            type: "POST",
            url : "../controllers/UsuarioController.php",
            data : {
                cod_usuario : cod_usuario,
                cod_espaco : cod_espaco,
                acao : acao
            },
            success: function(msg){
                try {
                    $("#progress").hide();
                    if (msg.indexOf("Exception: ") != -1) {
                        msg = msg.replace("Exception: ", "");
                        showMessage(ERROR_MESSAGE, msg);
                        return;
                    }
                    if (acao == 'cadastrar_espaco') {
                        listarEspacosUsuario();
                    } else if (acao == 'excluir_espaco') {
                        var botao = $('#espaco_' +cod_espaco).children("td:first");
                        tabela_espaco.fnDeleteRow( tabela_espaco.fnGetPosition(botao[0])[0]);
                    }
                    $("#recurso").dialog('close');
                } catch(e) {
                    reportCrash(null, e.name, e.stack);
                }
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                reportCrash(XMLHttpRequest, textStatus, errorThrown);
            }
        });
    } catch(e) {
        reportCrash(null, e.name, e.stack);
    }
}

function listarEspacosUsuario() {
    try {
        $("#listagem_espaco").load('espaco.html', null);
    } catch(e) {
        reportCrash(null, e.name, e.stack);
    }
}

function manutencaoUsuario(acao, cod_usuario) {
    try {
        $("#progress").show();
        var nome;
        var login;
        var senha;
        var cod_espaco;
        var cod_grupo = cod_grupo_consulta;
        if (acao == 'cadastrar') {
            nome = $("#nome_cadastrar").val();
            if (nome == '') {
                showMessage(ERROR_MESSAGE, 'Nome inválido!');
                return;
            }
            login = $("#usuario_cadastrar").val();
            if (login == '') {
                showMessage(ERROR_MESSAGE, 'Usuário inválido!');
                return;
            }
            senha = $("#senha_cadastrar").val();
            if (senha == '') {
                showMessage(ERROR_MESSAGE, 'Senha inválida!');
                return;
            }
            if (cod_grupo == '') {
                showMessage(ERROR_MESSAGE, 'Grupo inválido!');
                return;
            }
        }
        $.ajax({
            type: "POST",
            url : "../controllers/UsuarioController.php",
            data : {
                cod_usuario : cod_usuario,
                nome : nome,
                login : login,
                senha : senha,
                cod_grupo : cod_grupo,
                acao : acao
            },
            success: function(msg){
                try {
                    $("#progress").hide();
                    if (msg.indexOf("Exception: ") != -1) {
                        msg = msg.replace("Exception: ", "");
                        showMessage(ERROR_MESSAGE, msg);
                        return;
                    }
                    if (acao == 'cadastrar') {
                        listarUsuarios();
                    } else if (acao == 'excluir') {
                        var botao = $('#' +cod_usuario).children("td:first");
                        tabela_usuario.fnDeleteRow( tabela_usuario.fnGetPosition(botao[0])[0]);
                    }
                    $("#recurso").dialog('close');
                } catch(e) {
                    reportCrash(null, e.name, e.stack);
                }
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                $("#progress").hide();
                reportCrash(XMLHttpRequest, textStatus, errorThrown);
            }
        });
    } catch(e) {
        reportCrash(null, e.name, e.stack);
    }
}

function listarUsuarios() {
    try {
        $("#listagem_usuario").load('usuario.html', null);
    } catch(e) {
        reportCrash(null, e.name, e.stack);
    }
}

function showDialogConsultaEmail() {
    try {
        $("#formConsultaSenha").dialog({
            resizable: false,
            modal: true,
            bgiframe: true,
            width: 400,
            close: function(event, ui) {
                $(this).dialog('destroy');
            }
        });
    } catch(e) {
        reportCrash(null, e.name, e.stack);
    }
}

function consultarSenha() {
    try {
        var email = $('#email_consultar').val();
        if (email == '') {
            showMessage(ERROR_MESSAGE, 'informe o email!');
            return;
        }
        regexpEmail = /^[\w-]+(\.[\w-]+)*@(([A-Za-z\d][A-Za-z\d-]{0,61}[A-Za-z\d]\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;
        if (!regexpEmail.test(email)) {
            showMessage(ERROR_MESSAGE, 'Verifique o email!');
            return;
        }
        $.ajax({
            type: "POST",
            url : "/sispec/controllers/UsuarioController.php",
            data: {
                acao : "consultar_senha",
                email : email
            },
            success: function(msg){
                try {
                    if (msg.indexOf("Exception: ") != -1) {
                        msg = msg.replace("Exception: ", "");
                        showMessage(ERROR_MESSAGE, msg);
                        return;
                    }
                    showMessage(SUCCESS_MESSAGE,'A senha e o usuário foram enviados por email!');
                    $('#email_consultar').val("");
                    $("#formConsultaSenha").dialog('destroy');
                } catch(e) {
                    reportCrash(null, e.name, e.stack);
                }
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                reportCrash(XMLHttpRequest, textStatus, errorThrown);
            }
        });
    } catch(e) {
        reportCrash(null, e.name, e.stack);
    }
}